Controller
和 RestController
是 Spring Framework 中用於建立控制器的兩種不同類型的註解,它們在處理 HTTP 請求時有一些重要的區別。
雖然上一篇章提到過(這裡在讓我們再複習一次)
@Controller
註解通常用於建立傳統Web 應用程式的 Controller,。@Controller
類中的方法默認情況下不會將響應主體內容以 JSON 或 XML 格式返回,而是返回 HTML。@Controller
public class MyController {
@GetMapping("/hello")
public String helloWorld() {
return "hello"; // 返回視圖名稱 (或是可以回傳ModelandView)
}
}
@RestController
註解用於建立 RESTful Web 服務的控制器,這些控制器通常用於直接返回數據,而不是 HTML 頁面。@RestController
類中的方法默認情況下,Spring 會將其自動序列化為 JSON 或 XML 格式,並將其作為Response主體發送給客戶端。@RestController
public class MyRestController {
@GetMapping("/api/hello")
public Map<String, String> helloWorld() {
Map<String, String> response = new HashMap<>();
response.put("message", "Hello, world!");
return response; // 返回 JSON 數據
}
}
懶人包:
@Controller
通常用於傳統的 Web 應用程式,回傳 HTML 頁面名稱。@RestController
用於建立 RESTful Web 服務,直接返回數據,通常是 JSON 或 XML 格式。再Controller內的Resuest跟Response也有許多變體的註解,讓我們留到下一篇再談。
https://www.baeldung.com/spring-controller-vs-restcontroller
https://www.codingninjas.com/studio/library/difference-between-controller-and-restcontroller